/*************************************************************************
    > File Name: devices.h
	> Author: xuwenlong
	> Mail: myxuan475@126.com 
    > Created Time: 2018年10月18日 星期三 12时03分33秒
 ************************************************************************/
#ifndef __DEVICES_H__
#define __DEVICES_H__

#include<stdio.h>
#include <transport/transport.h>
#include <utils/logger.h>
#include <utils/threads/thread.h>
#include <vector>
#include <queue>
#include <utils/lock.h>
#include <utils/sqlite.h>
#include <dbms/devices.h>
#include <dbms/transports.h>

using namespace std;

class Devices
{
public:
    Devices();
    virtual ~Devices();

    /*
     * remote request
     * 远程请求
     */
    virtual DAS_RESULT getDeviceStatus(
            const Json::Value &params,
            Json::Value &result);

    virtual DAS_RESULT getAcquireValues(
            const Json::Value &params,
            Json::Value& result);

    virtual DAS_RESULT getChnList(
            Json::Value &result);

    virtual DAS_RESULT getTempList(
            Json::Value &result);

    virtual DAS_RESULT getDeviceList(
            const Json::Value &params,
            Json::Value &result);

    virtual DAS_RESULT getDeviceInfo(
            const Json::Value &params,
            Json::Value &result);

    virtual DAS_RESULT addDevice(
            const Json::Value &params);

    virtual DAS_RESULT deleteDevice(
            const Json::Value &params);

    virtual DAS_RESULT modifyDevice(
            const Json::Value &params);

    virtual DAS_RESULT getAcquireData(
            const Json::Value &params,
            Json::Value &result);
    transmgr_t getCommunication(const Json::Value &jsonTrans);

    Json::Value getAcquireData(S32 id);
private:
    Json::Value getDeviceInfo(S32 devId);
    Json::Value getDeviceInfo(
            const deviceinfo_t &dev
            );
    Json::Value getCommunication(const transmgr_t &trans);
};

#endif//__REMOTESERVICE_H__
